#ifndef RANGEALM_H_
#define RANGEALM_H_

#include "../../SAMA_Function.h"


typedef struct {
	float UL;							//< 报警上限
	float DL;							//< 报警下限
	float Dead;							//< 报警死区
}RANGEALM_Par_t;



typedef struct {
	int Last_DO;						//< 上一时刻数字量输出
}RANGEALM_Sta_t;



struct RANGEALM_T
{
	Model_Base_t Base;					//< 模块基本参数结构体
	RANGEALM_Par_t Par;					//< 模块可调参数结构体
	RANGEALM_Sta_t Sta;					//< 模块运算中间参数结构体
};	


extern RANGEALM_T* RANGEALM_t;


bool CALCU_SAMA(RANGEALM)(Model_Base_t* arg, float dt, bool* DI, bool* DO, float* AI, float* AO);		//< SAMA运算函数
int BC_PARA(RANGEALM)(Model_Base_t* arg, void** Data);													//< 广播SAMA参数变量函数（无参数需要广播的模块直接将BCPara函数设置为NULL即可）
int BAK_STA(RANGEALM)(Model_Base_t* arg, void** Data);													//< 备份SAMA运算中间参数
int ANA_STA(RANGEALM)(Model_Base_t* arg, void** Data);													//< 解析备份的SAMA运算中间参数
int CHANGE_PAR(RANGEALM)(Model_Base_t* arg, void** Data);												//< 在线修改模块参数函数
void INIT_STAPAR(RANGEALM)(Model_Base_t* arg);															//< 初始化模块运算中间参数


#endif
